﻿#include<iostream>
using namespace std;
template<typename type1>
type1 bigger(type1 a, type1 b) {
	return a > b ? a : b;
}
int bigger(int a, int b) {//执行顺序中重载高于模板
	return a > b ? a : b;
}
template<>
int* bigger(int* a, int* b) {//定义例外情况
	return *a > *b ? a : b;
}

template<typename type1>
type1 ave(type1 a, type1 b, type1 c) {//模板重载
	return (a + b + c) / 3;
}
template<typename type1>
type1 ave(type1 a, type1 b) {
	return (a + b) / 3;
}

int main() {
	int a{ 200 }, b{ 100 };
	int c;
	c = *bigger(&a, &b);//在type1 bigger(type1 a, type1 b)的情况下，比较的是a和b的内存地址，b的内存地址比a大
	cout << bigger(&a, &b) << endl;
	cout << c << endl;

	int d{ 200 }, e{ 100 }, f{ 1234 };
	int g;
	g = ave(d, e, f);
	cout << g << endl;
}